小编Ant*_*lov的帖子

模拟java.lang.Thread的最佳方法是什么?

我正在为Java 6 *1开发变换器,它执行一种部分评估,但为了简单起见,我们考虑Java程序的抽象语法树解释.

如何Thread通过解释程序模拟行为?

目前,我想到了以下几点:

AstInterpreter应该实现java.lang.Runnable.它还应该重写java.lang.Thread(或其子类)的每个new-instance-expression,用新的AstInterpreter实例替换Thread's target(java.lang.Runnable):

编辑:提供更复杂的示例.

编辑2:备注1.

目标计划:

class PrintDemo {
   public void printCount(){
    try {
         for(int i = 5; i > 0; i--) {
            System.out.println("Counter   ---   "  + i );
         }
     } catch (Exception e) {
         System.out.println("Thread  interrupted.");
     }
   }
}

class ThreadDemo extends Thread {
   private Thread t;
   private String threadName;
   PrintDemo  PD;

   ThreadDemo( String name,  PrintDemo …
Run Code Online (Sandbox Code Playgroud)

java multithreading interpreter bytecode abstract-syntax-tree

18
推荐指数
1
解决办法
1477
查看次数

如何使用混合数据类型执行约束求解?

我正在研究Java 6 *1的源到源转换器.

我需要保持负面信息和正面信息,因此我必须为变压器实施小约束系统.该约束系统是受限制的种类可被定义为下面的CNF式:

(v1 == c1 /\ v2 == c2 ... vn == cn) /\ ((w1,1 != d1,1 \/ w1,2 !== d1,2 ... w1,k != d1,k) /\ (w2,1 != d2,1 \/ ...) /\ ... (wm,1 != dm,1 \/ ... \/ wm,k != dm,k))

其中vi == ci等式约束(取代,变量赋值),

wj != dj,l不平等的约束,

vi, wj,l变量,

ci, dj,l常量(文字).

常量类型是Java原始类型和映射到整数的引用类型.常量也是任意类似AST的结构(表示部分计算的表达式,可能包含(元)变量).

约束系统的工作原理如下:

当变换器到达条件(例如if(x == …

java constraints constraint-programming constraint-satisfaction

11
推荐指数
1
解决办法
528
查看次数

使用DCG从EBNF在Prolog中实现DSL的困难

我正在为Prolog中的proto文件实现Google Protobuf编译器,以生成Prolog程序.Prolog是SWI-Prolog.

我正在将EBNF定义翻译成DCG,并遇到了一些问题:

  1. 我必须处理[ ... ]{ ... }EBNF构造 - 意思 optional(可执行零或一次)和repeatative(可执行任意次);

  2. 我必须使用DCG的构造将回调插入到DCG代码中以实现编译器功能的一部分(语法切换/导入/等){ ... },这允许在DCG规则内的Prolog语法中实现目标.

我正在申请optionalrepeatative元谓词:$$rep/1,$$opt/1:

EBNF
decimals  = decimalDigit { decimalDigit }
exponent  = ( "e" | "E" ) [ "+" | "-" ] decimals 

DCG
decimals  --> decimalDigit, '$$rep'( decimalDigit ).
exponent  --> ( "e"; "E" ), '$$opt'( "+"; "-" ), decimals.

'$$rep'( Goal …
Run Code Online (Sandbox Code Playgroud)

prolog ebnf dcg

6
推荐指数
1
解决办法
195
查看次数