Raize 重新编译

最近项目用到了Raize5的日历控件, 需要在中文版本与英文版本中切换显示, 这个需要修改 RzPopups.pas, 修改了需要重新编译.

费老大劲了.

  

 

首选修改 RzBorder.pas, 不然编译不过

再改  \RC5\Source\!Build_RC5.cmd

运行OK, 替换dcu, 重新启动IDE, 完美!

 

编译运行的文件 点此下载

这个文件Build_RC52.cmd记得改一下这个文件路径

set DCC32EXE="C:\Program Files (x86)\Borland\Delphi7\Bin\DCC32.exe"

 

如果你想实现的是上图效果  那么替换dcu文件到引用的地方就好了.

用法简单

    if gClientLang = 2 then
    begin
      LongMonthNames[1]:='Jan ';
      LongMonthNames[2]:='Feb ';
      LongMonthNames[3]:='Mar ';
      LongMonthNames[4]:='Apr ';
      LongMonthNames[5]:='May ';
      LongMonthNames[6]:='June ';
      LongMonthNames[7]:='July ';
      LongMonthNames[8]:='Aug ';
      LongMonthNames[9]:='Sept ';
      LongMonthNames[10]:='Oct ';
      LongMonthNames[11]:='Nov ';
      LongMonthNames[12]:='Dec ';

      ShortDayNames[1]:='Sun';
      ShortDayNames[2]:='Mon';
      ShortDayNames[3]:='Tues';
      ShortDayNames[4]:='Wed';
      ShortDayNames[5]:='Thur';
      ShortDayNames[6]:='Fri';
      ShortDayNames[7]:='Sat';
    end else
    begin
      LongMonthNames[1]:='一月 ';
      LongMonthNames[2]:='二月 ';
      LongMonthNames[3]:='三月 ';
      LongMonthNames[4]:='四月 ';
      LongMonthNames[5]:='五月 ';
      LongMonthNames[6]:='六月 ';
      LongMonthNames[7]:='七月 ';
      LongMonthNames[8]:='八月 ';
      LongMonthNames[9]:='九月 ';
      LongMonthNames[10]:='十月 ';
      LongMonthNames[11]:='十一月 ';
      LongMonthNames[12]:='十二月 ';

      ShortDayNames[1]:='';
      ShortDayNames[2]:='';
      ShortDayNames[3]:='';
      ShortDayNames[4]:='';
      ShortDayNames[5]:='';
      ShortDayNames[6]:='';
      ShortDayNames[7]:='';
    end; 
View Code

转载于:https://www.cnblogs.com/doorsky/p/7904923.html

语法分析是编译器的重要组成部分,它将源代码解析成抽象语法树(AST),以便进一步处理。下面是一个基本的语法分析实验,其中我们将使用自顶向下的递归下降分析方法。 1. 定义文法 首先,我们需要定义一种文法来描述我们要分析的语言。假设我们要分析的语言是一个简单的四则运算表达式语言,其中包含加、减、乘、除四种操作符,以及括号和整数常量。该语言的文法可以定义如下: ``` expr -> term (+|- term)* term -> factor (*|/ factor)* factor -> int | '(' expr ')' int -> digit+ digit -> 0|1|2|3|4|5|6|7|8|9 ``` 2. 实现语法分析器 接下来,我们需要实现一个语法分析器来解析源代码并构建抽象语法树。我们可以使用递归下降分析方法,其中每个非终结符对应一个函数,该函数负责解析该非终结符的语法规则。 下面是一个简单的Python实现: ```python class Parser: def __init__(self, tokens): self.tokens = tokens self.pos = 0 def parse(self): return self.expr() def expr(self): left = self.term() while self.peek() in ('+', '-'): op = self.consume() right = self.term() left = ('+' if op == '+' else '-', left, right) return left def term(self): left = self.factor() while self.peek() in ('*', '/'): op = self.consume() right = self.factor() left = ('*' if op == '*' else '/', left, right) return left def factor(self): if self.peek() == '(': self.consume() expr = self.expr() self.consume(')') return expr else: return self.int() def int(self): return int(self.consume()) def consume(self, expected=None): if expected and self.peek() != expected: raise ValueError(f"Expected {expected}, but got {self.peek()} at position {self.pos}") token = self.tokens[self.pos] self.pos += 1 return token def peek(self): if self.pos >= len(self.tokens): return None return self.tokens[self.pos] ``` 该语法分析器的主要逻辑在 `expr`、`term` 和 `factor` 函数中。每个函数都代表一个非终结符,它们会递归调用其他非终结符的函数来解析子表达式。 3. 测试 最后,我们可以使用一些测试用例来验证我们的语法分析器是否正确解析了源代码。下面是一些示例测试用例: ```python parser = Parser(['2', '+', '3', '*', '4']) ast = parser.parse() assert ast == ('+', 2, ('*', 3, 4)) parser = Parser(['(', '2', '+', '3', ')', '*', '4']) ast = parser.parse() assert ast == ('*', ('+', 2, 3), 4) parser = Parser(['1', '+', '2', '+', '3', '+', '4']) ast = parser.parse() assert ast == ('+', ('+', ('+', 1, 2), 3), 4) ``` 这些测试用例分别验证了加减乘除的优先级、括号的处理以及多个操作符连续出现的情况。如果我们的语法分析器能够正确解析这些表达式,那么我们可以认为它已经完成了任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值